<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="app">
    <h1>vue3-深层响应式</h1>
    <p>message: {{ message }}</p>
    <button @click="fn">btn</button>
    <p>arr: {{ arr }}</p>
  </div>

  <script src="../Vue.js"></script>

  <script>
    // 在vue2里面，如果改变复杂数据类型里面的值，可能会出现响应式失效的问题(使用深浅拷贝，或者$set方法)
    // 在vue3里面，已经解决了这个问题

    // vue2的响应式是基于Object.defineProperty()来实现的
    // vue3的响应式换成了用es6的Proxy来实现

    Vue.createApp({
      data() {
        return {
          message: 'Hello Vue!',
          arr: [1,2,3],
          obj: {
            a: 3,
            b: 4
          }
        }
      },
      methods: {
        fn() {
          this.arr[1] = 20;
          console.log(this.arr);
        }
      }
    }).mount("#app")
    </script>
</body>
</html>